package bz.ziro.kanbe.dao;

import java.util.List;

import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Key;

import bz.ziro.kanbe.bean.Pager;
import bz.ziro.kanbe.meta.SiteFileMeta;
import bz.ziro.kanbe.model.SiteFile;
import bz.ziro.kanbe.util.KeyFactory;

/**
 * ファイルアクセス
 * @author Administrator
 */
public class SiteFileDao extends BaseDao<SiteFile> {

	/**
	 * メタデータ
	 */
    private static final SiteFileMeta fileMeta = new SiteFileMeta();

    /**
     * 検索
     * @param aKey
     * @return
     */
    public static SiteFile find(Long aKey) {
        Key key = KeyFactory.createFileKey(aKey);
        return Datastore.query(fileMeta)
        		.filter(
        			fileMeta.key.equal(key)
        		).asSingle();
    }
   
    /**
     * 全件取得
     * @return
     */
    public static List<SiteFile> all() {
    	return Datastore.query(fileMeta).asList();
    }

    /**
     * 削除
     * @param aKey
     */
    public static void delete(Long aKey) {
        Key key = KeyFactory.createFileKey(aKey);
        Datastore.delete(key);
    }

    /**
     * ファイルデータを取得
     * @param pager
     * @return
     */
    public static List<SiteFile> findPageList(Pager pager) {
        return  Datastore.query(fileMeta)
        			.offset(pager.getOffset()).limit(pager.getLimit())
        			.sort(fileMeta.createDate.desc).asList();
    }
    
    /**
     * 件数取得
     * @return
     */
    public static int count() {
        return Datastore.query(fileMeta).count();
    }
}
